#ifndef __ST7735S_H
#define __ST7735S_H


#include "stm32f1xx_hal.h"

// 定义引脚初始化函数
// #define ST7735S_GPIO_INIT


// #define TFT_LCD_RCC_CLOCK           RCC_AHB1Periph_GPIOE
//#define TFT_LCD_GPIO_PORT           GPIOC
#define ST7735S_CS_PIN              GPIO_PIN_7
#define ST7735S_CS_PIN_PORT         GPIOC
#define ST7735S_RESET_PIN           GPIO_PIN_6
#define ST7735S_RESET_PIN_PORT      GPIOC
#define ST7735S_DC_PIN              GPIO_PIN_8
#define ST7735S_DC_PIN_PORT         GPIOB
#define ST7735S_BLK_PIN             GPIO_PIN_9
#define ST7735S_BLK_PIN_PORT        GPIOB

#define ST7735S_CS_LOW              HAL_GPIO_WritePin(ST7735S_CS_PIN_PORT, ST7735S_CS_PIN, GPIO_PIN_RESET)
#define ST7735S_CS_HIGH             HAL_GPIO_WritePin(ST7735S_CS_PIN_PORT, ST7735S_CS_PIN, GPIO_PIN_SET)
#define ST7735S_DC_W                HAL_GPIO_WritePin(ST7735S_DC_PIN_PORT, ST7735S_DC_PIN, GPIO_PIN_RESET)
#define ST7735S_DC_R                HAL_GPIO_WritePin(ST7735S_DC_PIN_PORT, ST7735S_DC_PIN, GPIO_PIN_SET)
#define ST7735S_RESET_LOW           HAL_GPIO_WritePin(ST7735S_RESET_PIN_PORT, ST7735S_RESET_PIN, GPIO_PIN_RESET)
#define ST7735S_RESET_HIGH          HAL_GPIO_WritePin(ST7735S_RESET_PIN_PORT, ST7735S_RESET_PIN, GPIO_PIN_SET)
#define ST7735S_BLK_LOW             HAL_GPIO_WritePin(ST7735S_BLK_PIN_PORT, ST7735S_BLK_PIN, GPIO_PIN_RESET)
#define ST7735S_BLK_HIGH            HAL_GPIO_WritePin(ST7735S_BLK_PIN_PORT, ST7735S_BLK_PIN, GPIO_PIN_SET)

#define ST7735S_WIDTH               128
#define ST7735S_HEIGHT              160

#define   BLACK     0x0000       //   黑色    
#define   NAVY      0x000F      //    深蓝色  
#define   DGREEN    0x03E0        //  深绿色  
#define   DCYAN     0x03EF       //   深青色  
#define   MAROON    0x7800       //   深红色      
#define   PURPLE    0x780F       //   紫色  
#define   OLIVE     0x7BE0       //   橄榄绿      
#define   LGRAY     0xC618        //  灰白色
#define   DGRAY     0x7BEF        //  深灰色      
#define   BLUE      0x001F        //  蓝色    
#define   GREEN     0x07E0        //  绿色          
#define   CYAN      0x07FF        //  青色  
#define   RED       0xF800        //  红色       
#define   MAGENTA   0xF81F        //  品红    
#define   YELLOW    0xFFE0        //  黄色        
#define   WHITE     0xFFFF        //  白色






void ST7735S_Init(void);
void ST7735S_SetAddressWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1);
void ST7735S_DrawPoint(uint16_t x, uint16_t y, uint16_t Dat);
void ST7735S_DrawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t Color);
void ST7735S_DrawRect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t c);
uint16_t ST7735S_ReadPoint(uint16_t x, uint16_t y);
void ST7735S_SetColor(uint16_t color);
void ST7735S_FillScreen(uint16_t color);
void ST7735S_ClearScreen(uint16_t color);
void ST7735S_DrawFont_GBK16(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s);
void ST7735S_DrawNum(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint16_t num);
void ST7735S_OpenBLK(void);
void ST7735S_CloseBLK(void);


#endif
